package hospital;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

class Banco {
	Connection MinhaConexao;

	public void Conectar() {
		try {
			// declaração de um url que será a ponte jdbc-odbc com o banco de
			// MeuBanco			
            // Alerado por Neto - Meu banco de dados aqui chama-se aline
                    String url = "jdbc:jtds:sqlserver://localhost/aline";
			// carrega um jdbc-odbc driver
			
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
			
			MinhaConexao = DriverManager.getConnection(url,"sa","freire");
		} catch (ClassNotFoundException ex) {
			
            System.out.println("Driver JDBC-SQLServer não encontrado! \n"
					+ ex.getMessage());
		} catch (SQLException ex) {
			System.out.println("Problemas na conexao com a fonte de dados \n"
					+ ex.getMessage());
		}
	}

	public void Desconectar() {
		try {
			MinhaConexao.close();
			return;
		} catch (SQLException ex) {
			Logger.getLogger(Banco.class.getName()).log(Level.SEVERE, null, ex);
		}
	}

	public String[] ConsultaView() {
		// String de retorno, caso n�o haja exito na consulta, retorna nulo, ou
		// uma mensagem que voce queira
		String retorno[] = null;
		try {
			Conectar();

			// cria e executa uma instrução SQL
			Statement MeuState = MinhaConexao
					.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
							ResultSet.CONCUR_READ_ONLY);
			// Mostra o resultado da instrução SQL na tela

			ResultSet rs = MeuState.executeQuery("select * from Vw_consulta");
			
			System.out.printf("Paciente\tMedico                     \tEspecialidade           \tData\n");
			System.out.printf("--------\t--------------             \t---------------         \t----------------\n");

			//Caso haja exito na consulta
			if (rs.next()){
				//neste trecho conto quantas linha teve na consulta
				int contLinhas = 0;

                while (rs.next()) {
					contLinhas ++;				
				}
				
				rs.first();

				//inicia o vetor de String de retorno
				retorno = new String[contLinhas];
				
				contLinhas = 0;
				while (rs.next()) {
                    // Alterado por Neto
					String codigo = rs.getString("Paciente");
					String nome = rs.getString("Medico");
                    String esp = rs.getString("Especialidade");
                    String data = rs.getString("Data");
                                        
					retorno[contLinhas] = codigo + " \t " + nome+""+esp+""+data ;
                    System.out.println( retorno[contLinhas] );
				}
				
			}
			
			// Fecha a Conexão
			
			Desconectar();
		} catch (SQLException ex) {
			System.out.println("Problemas na conexao com a fonte de dados \n"
					+ ex.getMessage());
		} catch (Exception ex) {
			System.out.println("Erro  \n" + ex.getMessage());
		}
		return retorno;
	}
        
    public void PRC_INS_medico(){
           try {
                Conectar();

                Statement MeuState = MinhaConexao
					.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
							ResultSet.CONCUR_READ_ONLY);
                // Alterado por Neto - o fechamento da aspa está duplicado no campo CRM
                // String SQL = "INSERT INTO Cad_Medico Values (120,'Carla Santos','2899'')";
                String SQL = "INSERT INTO Cad_Medico Values (120,'Carla Santos','2899')";
                        
                MeuState.executeUpdate(SQL);
                // JOptionPane.showMessageDialog(null,"Gravação realizada com sucesso!");
                System.out.println("Gravação realizada com sucesso!");
                Desconectar();
		} catch (SQLException ex) {
			{
                    if (ex.getMessage().equals("General error"))
                        System.out.println("Medico já Cadastrado " + ex.getMessage());
                        // JOptionPane.showMessageDialog(null,"Medico já Cadastrado"+ ex.getMessage());
                    else	
                        System.out.println("Dados Inválidos" + ex.getMessage());
                        //JOptionPane.showMessageDialog(null,"Dados Inválidos"+ ex.getMessage());
            }        
		} catch (Exception ex) {
			System.out.println("Erro  \n" + ex.getMessage());
		}
	}   
        
    public void PRC_REM_medico(){
          try {
			Conectar();

			Statement MeuState = MinhaConexao
					.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
							ResultSet.CONCUR_READ_ONLY);
			// Alterado por Neto - O Delete não usa asterisco *
            // String SQL = "DELETE * FROM Cad_Medico where (id_medico = '506')";
            String SQL = "DELETE FROM Cad_Medico where (id_medico = '506')";
	        MeuState.executeUpdate(SQL);
            //
            // JOptionPane.showMessageDialog(null,"Remoção realizada com sucesso!");
            Desconectar();
		} catch (SQLException ex) {
			{
                    if (ex.getMessage().equals("General error")) 
                        JOptionPane.showMessageDialog(null,"Medico não Cadastrado"+ ex.getMessage());	
                    else	
                     JOptionPane.showMessageDialog(null,"Dados Inválidos"+ ex.getMessage());
                    
                }
                    
		} catch (Exception ex) {
			System.out.println("Erro  \n" + ex.getMessage());
		}
		
	}   
        
    public void PRC_ALT_medico(){
        
           try {
			Conectar();

			Statement MeuState = MinhaConexao
					.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
							ResultSet.CONCUR_READ_ONLY);
			
            String SQL = "UPDATE Cad_Medico SET (CRM = '1111') where (id_medico='506')";
	        MeuState.executeUpdate(SQL);
            // JOptionPane.showMessageDialog(null,"Atualização realizada com sucesso!");
            Desconectar();
		} catch (SQLException ex) {
			{
                    if (ex.getMessage().equals("General error")) 
                        JOptionPane.showMessageDialog(null,"Medico não Cadastrado"+ ex.getMessage());	
                    else	
                     JOptionPane.showMessageDialog(null,"Dados Inválidos"+ ex.getMessage());
                    
                }
                    
		} catch (Exception ex) {
			System.out.println("Erro  \n" + ex.getMessage());
		}
		
	}   
}
